<?php
/**
 * Класс Controller_Default отвечает за обработку страниц, по первому слову адреса которых нельзя выбрать контроллер
 * * @author Mike
 */
class Controller_Default extends Controller_Base {
	
	public function action() {
		$url = Service_Escape::absolutelyEscapeString($this->arrRequest[0]);
  	  	// Ищем статью(страница или новость) с таким URL
    	$objArticle = new Article();
      	$objArticle->find('first', array('conditions' => "`article`.`url` = '" . $url . "' AND `article`.`essence_type` != 2"));
		if(!$objArticle->id) throw new Exception('', 404);	  
		$this->actionArticle($objArticle);     	 
	}
	
	/**
	 * Страница конкретной статьи
	 * 
	 * @param Article $objArticle - объект статьи
	 */
	public function actionArticle(Article $objArticle) {
		// Обработка данных (заполнение формы)
		$objData = new Data(isset($_POST['Data']) ? Service_Escape::absolutelyEscapeArray($_POST['Data']) : null);
		if (isset($_POST['Data'])) $this->processForm($objArticle->getField('url'), $objData);
		
		$this->bodyAttr = 'article';
		$this->title = $objArticle->getField('title');
		$this->keywords = $objArticle->getField('keywords');
		$this->description = $objArticle->getField('description');
		if(!$objArticle->getField('no_show_name')) $this->pageHead =  $objArticle->getField('article_name') . (User_Seance::isAdmin() ? ' (<a href="' . W_ABSPATH . 'cms/articles/edit/' . $objArticle->id . '">Редактировать</a>)' : '');
		
		$this->showHeader();
			View_Article::showArticlePage($objArticle);
			View_Article::showArticleForms($objArticle->getField('url'), $objData);
		$this->showFooter();
	}
	
	/**
	 * Осущеcтвляем обработку форм
	 *
	 * @param string $url - URL страницы
	 * @param Data $objData - данные формы
	 */
	public function processForm($url, Data $objData){
		switch ($url) {
			case 'add_city': $this->processAddCityForm($objData); break;
			//case 'group_form.htm': $this->processGroupForm($objData); break;
		}
	}
	
	/**
	 * Осущеcтвляем обработку формы на странице добавления города
	 *
	 * @param Data $objData - Данные формы
	 */
	public function processAddCityForm(Data $objData) {
		$objData->validatesLengthOf = array(
				'c_name' => array('minimum' => 2, 'maximum' => 128, 'message' => 'Город - 2-128 символов'),
				'r_name' => array('minimum' => 2, 'maximum' => 256, 'message' => 'Поле регион - не более 256 символов', 'allowNull' => true)
		);
	
		$objData->validation('save');
		
		// Отправка письма на почту!!!!!!!!!!!!!!
		/*
		if (!Exception_ActiveRecord::getExceptionsOfModel('Data')) {
			unset($objData->tableFields['save']);
	
			$arFieldValues = array('e_mail' => $objData->tableFields['e_mail'], 'text' => $objData->tableFields['text'], 'ID_user' => User_User::getId() ? User_User::getId() : null);
			$objDB->insert('question_notify', $arFieldValues);
				
			$objNotification = new User_Notification();
			$objNotification->feedback($objData->tableFields);
				
			unset($objData->tableFields['e_mail'],$objData->tableFields['text'],$_POST['Data']);
		}
		*/
	}
}
?>